package xqp.mq._05_topics;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException;


/**
 * 广播模式  只要绑定了交换机队列都会接收到
 * 生产者步骤
 * 1. 创建连接
 * 2. 创建通道
 * 3. 创建交换机
 * 4. 发送消息
 */


//生产者
public class Producer {

    // 定义一个交换机名字的常量
    public static final String NAME_EXCHANGE_TPOICS = "NAME_EXCHANGE_TPOICS";

    public static void main(String[] args) throws IOException, TimeoutException {
        // 通过工厂创建连接对象
        ConnectionFactory factory = new ConnectionFactory();
        Connection connection = factory.newConnection();

        // 通过连接对象创建通道
        Channel channel = connection.createChannel();

        // 通过通道创建指定的交换机  第一个参数是交换机的名字  第二个参数是交换机的类型
        channel.exchangeDeclare(NAME_EXCHANGE_TPOICS, // 交换机的名字
                BuiltinExchangeType.TOPIC, // 交换机的类型
                true);  // 是否持久化交换机

        // 发送消息
        channel.basicPublish(NAME_EXCHANGE_TPOICS,// 交换机的名字
                "error.s" , // 队列的名字 routing key 和 DIRECT模式需要绑定当前交换机的队列需要这个routing key来绑定
                MessageProperties.PERSISTENT_TEXT_PLAIN, // 其他参数 将消息属性设置为持久化文本
                "稳住兄弟".getBytes());
        System.out.println("消息已发送");
    }
}
